/*
 * EquipmentType.h
 *
 *  Created on: Oct 8, 2011
 *  Created by: Devin Manno
 *  Updated by: Devin Manno,
 *	Last Update: Oct 8, 2011
 */

#ifndef EQUIPMENTTYPE_H_
#define EQUIPMENTTYPE_H_

#include "Stats.h"
#include "base.h"

class EquipmentType: public Base {
private:
	static const int maxSlots = 6;
	enum itemSlot { HEAD, CHEST, GLOVES, FEET, PANTS, WEAPON };
	int itemType;				// based on itemSlot, above
	Stats ItemStats;			// the item's stats
	
	bool canpickup();			// true if the item can be picked up

	EquipmentType* generateHelmet();	// generates a helmet with random stats and returns pointer to helmet
	EquipmentType* generateChest();		// generates chest armor with random stats and returns pointer to armor
	EquipmentType* generateGloves();	// generates gloves with random stats and returns pointer 
	EquipmentType* generateBoots();		// generates boots with random stats and returns pointer 
	EquipmentType* generatePants();		// generates pants with random stats and returns pointer 
	EquipmentType* generateWeapon();	// generates a weapon with random stats and returns pointer
public:
	EquipmentType();		// randomly create an EquipmentType object
	virtual ~EquipmentType();
	
	// getters
	int getItemType();		// returns the type of the equipment based on itemSlot
	
	// used by room class to randomly fill room with items. will call generate
	// functions above using rand and a switch
	EquipmentType* generateEquipment(); 

	// virtual function implementations
	std::string getObjectID();      // return the object ID
	std::string getDesc();          // return the description
	void setObjectID();
	void setDesc();
};

#endif /* EQUIPMENTTYPE_H_ */
